//
//  ViewController.m
//  08-UITableView
//
//  Created by 曹曹 on 16/7/25.
//  Copyright © 2016年 曹曹. All rights reserved.
//

#import "ViewController.h"

#define kTableViewReuse @"reuseIdentifier"

@interface ViewController () <UITableViewDelegate, UITableViewDataSource>
// 计数器
@property (nonatomic, assign) NSInteger count;
@end

@implementation ViewController

- (void)viewDidLoad {
    // 初始化
    self.count = 0;
    [super viewDidLoad];
    self.navigationController.navigationBarHidden = YES;
    // self.navigationController.navigationBar.hidden = YES;
#pragma mark - tableView基本创建
#warning UITableViewStyleGrouped可以去掉自动多余出来的行
    UITableView *tableView = [[UITableView alloc] initWithFrame:self.view.bounds style:UITableViewStylePlain];
    [self.view addSubview:tableView];
#pragma mark tableView属性
    // 1.rowHeight 行高
    // tableView.rowHeight = 200;
    // 2.预估行高度
    // tableView.estimatedRowHeight = 100;
    // 3.分割线
    // 颜色
    tableView.separatorColor = [UIColor redColor];
    // 设置隐藏分割线, UITableViewCellSeparatorStyleNone
    // 样式:默认为 UITableViewCellSeparatorStyleSingleLine
    tableView.separatorStyle = UITableViewCellSeparatorStyleSingleLine;
    // 4.tableView头视图
    // headView的x, y不影响其位置
    // 例:页面顶部轮播图, 个人资料
    // UIView *headerView = [[UIView alloc] initWithFrame:CGRectMake(1000, 1000, self.view.bounds.size.width, 200)];
//    headerView.backgroundColor = [UIColor greenColor];
#warning 如果tableView要进行频繁修改, 必须加上
//    // beginUpdates 和
//    // endUpdates
//    [tableView beginUpdates];
//    tableView.tableHeaderView = headerView;
//    [tableView endUpdates];
//    // 5.尾视图footerView x会对尾视图产生坐标影响, y不会
//    UIView *footerView = [[UIView alloc] initWithFrame:CGRectMake(10, 0, self.view.bounds.size.width, 400)];
//    footerView.backgroundColor = [UIColor redColor];
//    [tableView beginUpdates];
//    tableView.tableFooterView = footerView;
//    [tableView endUpdates];
#pragma mark - 隐藏tableView多余的空cell
    // 空cell一般出现在一个界面只展示几条数据且数据站不满整个屏幕
    tableView.tableFooterView = [UIView new];
    // 或者使用UITableViewStyleGrouped来创建tableView
#pragma mark - tableView 数据展示
    // delegate 代理, 帮助tableView执行一些事件
    // dataSource 数据源, 用来给tableView展示数据
    tableView.delegate = self;
    tableView.dataSource = self;
#pragma mark - 注册cell
    [tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:kTableViewReuse];
}

#pragma mark - tableViewDataSource
// 返回数据源个数
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return 10;
}
// 返回数据源cell的样式
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:kTableViewReuse];
//    if (cell == nil) {
//        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:kTableViewReuse];
//        _count++;
//        NSLog(@"创建新cell:%@----%ld", cell, _count);
//    } else {
//        NSLog(@"重用旧cell:%@", cell);
//    }
#pragma mark - cell 属性
    // 直接创建cell时可以选则cell的样式
    UITableViewCell *cell2 = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"cell2"];
    cell2.textLabel.text = @"不使用";
    // UITableViewCellStyleDefault cell默认style, 没有副标题
    // UITableViewCellStyleValue1 最左边主标题(黑), 最右边副标题(灰)
    // UITableViewCellStyleValue2 小字号, 蓝色主标题, 黑色副标题, 主副标题紧挨 没有imageView
    // UITableViewCellStyleSubtitle 主副标题上下紧挨, 主标题字号大, 副标题字号小
    // imageView会将cell的分割线和标题统一往右挤
    // cell主标题
    cell.textLabel.text = @"你好";
    // cell副标题, 注册方式下默认没有副标题
    cell.detailTextLabel.text = @"哇大喜哇";
    cell.imageView.image = [UIImage imageNamed:@"ZUD(TL)W%O@L~V%4CCG9ZOX"];
#pragma mark - cell创建方式
    // 1.直接创建
    // 判断重用池中有没有cell, 有责复用无则创建
    // 2.通过注册(registerClass)的方式创建
    // 注意: cell注册出来的style是default(没有副标题)
    return cell;
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end
